package org.xteam.camllight;

public enum InstructionType {
	CONSTBYTE,
	CONSTSHORT,
	GETGLOBAL,
	SETGLOBAL,
	CUR,
	SWITCH,
	BRANCH,
	BRANCHIF,
	BRANCHIFNOT,
	  POPBRANCHIFNOT,
	  BRANCHIFNEQTAG,
	  BRANCHIFEQ,
	  BRANCHIFNEQ,
	  BRANCHIFLT,
	  BRANCHIFGT,
	  BRANCHIFLE,
	  BRANCHIFGE,
	  BRANCHINTERVAL,
	  C_CALL1,
	  C_CALL2,
	  C_CALL3,
	  C_CALL4,
	  C_CALL5,
	  C_CALLN,
	  MAKEBLOCK,
	  MAKEBLOCK1,
	  MAKEBLOCK2,
	  MAKEBLOCK3,
	  MAKEBLOCK4,
	  TAGOF,
	  ACCESS,
	  ACC0,
	  ACC1,
	  ACC2,
	  ACC3,
	  ACC4,
	  ACC5,
	  ATOM,
	  ATOM0,
	  ATOM1,
	  ATOM2,
	  ATOM3,
	  ATOM4,
	  ATOM5,
	  ATOM6,
	  ATOM7,
	  ATOM8,
	  ATOM9,
	  GETFIELD,
	  GETFIELD0,
	  GETFIELD1,
	  GETFIELD2,
	  GETFIELD3,
	  SETFIELD,
	  SETFIELD0,
	  SETFIELD1,
	  SETFIELD2,
	  SETFIELD3,
	  STOP,
	  CHECK_SIGNALS,
	  APPLY,
	  RETURN,
	  APPTERM,
	  GRAB,
	  LET,
	  LETREC1,
	  DUMMY,
	  UPDATE,
	  ENDLET,
	  ENDLET1,
	  PUSHTRAP,
	  RAISE,
	  POPTRAP,
	  PUSH,
	  POP,
	  PUSHMARK,
	  PUSH_GETGLOBAL_APPLY,
	  PUSH_GETGLOBAL_APPTERM,
	  BOOLNOT,
	  NEGINT,
	  SUCCINT,
	  PREDINT,
	  ADDINT,
	  SUBINT,
	  MULINT,
	  DIVINT,
	  MODINT,
	  ANDINT,
	  ORINT,
	  XORINT,
	  SHIFTLEFTINT,
	  SHIFTRIGHTINTSIGNED,
	  SHIFTRIGHTINTUNSIGNED,
	  EQ,
	  NEQ,
	  LTINT,
	  GTINT,
	  LEINT,
	  GEINT,
	  INCR,
	  DECR,
	  FLOATOP,
	  INTOFFLOAT,
	  EQFLOAT,
	  NEQFLOAT,
	  LTFLOAT,
	  GTFLOAT,
	  LEFLOAT,
	  GEFLOAT,
	  STRINGLENGTH,
	  GETSTRINGCHAR,
	  SETSTRINGCHAR,
	  EQSTRING,
	  NEQSTRING,
	  LTSTRING,
	  GTSTRING,
	  LESTRING,
	  GESTRING,
	  MAKEVECTOR,
	  VECTLENGTH,
	  GETVECTITEM,
	  SETVECTITEM,
	  BREAK;
	
	private static final InstructionType[] instrutions = new InstructionType[values().length];
	  
	  static {
		
		for (InstructionType inst : values()) {
			instrutions[inst.ordinal()] = inst;
		}
	}

	public static InstructionType get(int code) {
		return instrutions[code];
	}

}
